﻿Imports System.IO

Public Class BoxImageUpdate
    Inherits CoreClass

    Dim idBox As Integer = 0
    Dim type As Integer = 0
    Dim cate As Integer = 1
    Dim iW As Integer = 0
    Dim iH As Integer = 0
    Dim ProName As String = ""
    ' Gan gia tri cho bien MenuID de kiem tra quyen cua ng dung, gia tri nay lay trog DB va dc fix
    Dim chkMenu As Integer = getIDMenu(6)


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            idBox = Integer.Parse(Request.QueryString("id"))
            type = Integer.Parse(Request.QueryString("type"))
            cate = Integer.Parse(Request.QueryString("cate"))
            iW = Integer.Parse(Request.QueryString("iW"))
            iH = Integer.Parse(Request.QueryString("iH"))
        Catch ex As Exception

        End Try
        If iW = 0 Or iH = 0 Then
            lblNotice.Text = "Module này không cần ảnh đại diện."
        Else
            lblNotice.Text = "Ảnh phải có kích thước >= <span style=""color:red;"">" & iW & "x" & iH & "</span> pixel."
        End If
        If idBox <= 1 Or type <= 0 Then
            If cate = 1 Then
                Response.Redirect("Box.aspx?type=" & type)
            Else
                Response.Redirect("BoxNew.aspx?type=" & type)
            End If
        End If
        Try
            chkPms((CInt(Session("GroupId").ToString())), chkMenu)
            If Not Page.IsPostBack Then
                If chkView = 1 Then
                    showImg()
                Else
                    'MsgBox(chkView & chkUpdate & chkDelete)
                    objAlert.ErrorBox(Page, "Bạn không có quyền truy xuất trang này, liên hệ với Admin để biết thêm chi tiết.")
                    'Response.Redirect("Default.aspx")
                End If
            End If
        Catch ex As Exception
            If cate = 1 Then
                Response.Redirect("Box.aspx?type=" & type)
            Else
                Response.Redirect("BoxNew.aspx?type=" & type)
            End If
        End Try
    End Sub

    ' Hàm show ảnh hiện tại của Box
    Private Sub showImg()
        Try
            Dim strSaveFolder As String = ""
            sql = "spi_BoxGetByID " & idBox & "," & cate
            objDataRead.ExeReader(sql)
            If Not objDataRead.dataRead.Read Then
                If cate = 1 Then
                    Response.Redirect("Box.aspx?type=" & type)
                Else
                    Response.Redirect("BoxNew.aspx?type=" & type)
                End If
            Else
                Dim d1 As Date = Date.Parse(objDataRead.dataRead("ProDate").ToString())
                strSaveFolder = "/EditorData/image" & Format(d1, "/yyyy/MM/dd/")
                lbl_Path.Text = Format(d1, "/yyyy/MM/dd/")
                ProName = objDataRead.dataRead("ProName").ToString()
            End If
            If objDataRead.dataRead("BoxImage").ToString = "" Then
                imgBox.ImageUrl = "/static/inSite/images/noimage.jpg"
            Else
                imgBox.ImageUrl = strSaveFolder & objDataRead.dataRead("BoxImage").ToString()
            End If
        Catch ex As Exception
            If objConfig.Developer.Equals("1") Then
                objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
            Else
                objAlert.ErrorBox(Page, "Lỗi kỹ thuật, hãy thông báo lại với Admin, xin cảm ơn.")
            End If
        End Try

    End Sub



    ' Xử lý sự kiện quay lại trang quản lý box
    Private Sub btnBack_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBack.Click
        If cate = 1 Then
            Response.Redirect("Box.aspx?type=" & type)
        Else
            Response.Redirect("BoxNew.aspx?type=" & type)
        End If

    End Sub

    ' Xử lý sự kiện upload ảnh và update dữ liệu vào DB
    Private Sub btnUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
        If Not chkUpdate = 1 Then
            objAlert.ErrorBox(Page, "Bạn không có quyền sử dụng tính năng này. <br><br>Liên hệ với Admin để biết thêm chi tiết.")
            Exit Sub
        End If
        uploadAvatar()
    End Sub

    ' Hàm kiểm tra file và upload file
    Private Sub uploadAvatar()
        If uplAvatar.HasFile Then
            Try
                iW = Integer.Parse(Request.QueryString("iW"))
                iH = Integer.Parse(Request.QueryString("iH"))
                If uplAvatar.PostedFile.ContentType = "image/jpeg" Or uplAvatar.PostedFile.ContentType = "image/gif" Or uplAvatar.PostedFile.ContentType = "image/png" Then
                    If uplAvatar.PostedFile.ContentLength < 512400 Then
                        ' Xu ly kiem tra kich thuoc anh co phu hop voi yeu cau hay khong?
                        Dim UploadedImage As System.Drawing.Image = System.Drawing.Image.FromStream(uplAvatar.PostedFile.InputStream)
                        If UploadedImage.Width < iW Then
                            objAlert.ErrorBox(Page, "Chiều rộng ảnh upload không đạt yêu cầu.")
                            Exit Sub
                        End If
                        If UploadedImage.Height < iH Then
                            objAlert.ErrorBox(Page, "Chiều cao ảnh upload không đạt yêu cầu.")
                            Exit Sub
                        End If

                        Dim filename As String = Path.GetFileName(uplAvatar.FileName)
                        filename = objFunction.GetUploadFileName(Server.MapPath("~/EditorData/image") & lbl_Path.Text, objFunction.UnicodeToPlain(uplAvatar.FileName))
                        uplAvatar.SaveAs(Server.MapPath("~/EditorData/image") & lbl_Path.Text & filename)


                        ' Thumbnail Image
                        Dim strSaveFile = Server.MapPath("~/EditorData/image") & lbl_Path.Text & filename
                        strSaveFile = strSaveFile.Replace("/", "\")
                        Dim tempDimension As Integer = 0
                        If iW > iH Then
                            tempDimension = iW
                        Else
                            tempDimension = iH
                        End If
                        Dim objThumb As New Thumbnail.Thumbnail
                        objThumb.InputFile = strSaveFile
                        objThumb.Scale = False
                        objThumb.Width = tempDimension
                        objThumb.Height = tempDimension
                        objThumb.CropWidth = iW
                        objThumb.CropHeight = iH
                        objThumb.CropType = Thumbnail.CropType.MiddleCenter
                        Dim fileThumb As String = objThumb.CreateThumbnail()
                        objThumb = Nothing
                        ' END Thumbnail Image


                        sql = "spi_BoxUpdateImage "
                        sql &= objFunction.ValueCheck(idBox) & ","
                        sql &= objFunction.FieldCheck(fileThumb)
                        objData.ExeNonQuery(sql)
                        If cate = 1 Then
                            '0 = Xóa, 1 = Thêm mới, 2 = Update, 3 = Khác
                            objFunction.writeLog(Session("UserId"), 1, "Update ảnh đại diện cho sản phẩm trong Box ", "Tên SP: " & ProName, "Tên ảnh: " & filename)
                        Else
                            '0 = Xóa, 1 = Thêm mới, 2 = Update, 3 = Khác
                            objFunction.writeLog(Session("UserId"), 1, "Update ảnh đại diện cho tin trong Box ", "Tiêu đè: " & ProName, "Tên ảnh: " & filename)
                        End If
                        objAlert.InfoBox(Page, "Update thành công.", Request.Url.PathAndQuery)
                    Else
                        objAlert.ErrorBox(Page, "File upload phải nhỏ hơn 500kB.")
                        Exit Sub
                    End If
                Else
                    objAlert.ErrorBox(Page, "Bạn chỉ được upload file ảnh định dạng: JPEG, GIF, PNG.")
                    Exit Sub
                End If
            Catch ex As Exception
                If objConfig.Developer.Equals("1") Then
                    objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
                Else
                    objAlert.ErrorBox(Page, "Lỗi kỹ thuật, hãy thông báo lại với Admin, xin cảm ơn.")
                End If
            End Try
        Else
            objAlert.ErrorBox(Page, "Bạn chưa chọn file ảnh để update.")
            Exit Sub
        End If
    End Sub

End Class